#ifndef __DFA_EXCEPTIONS_H__
#define __DFA_EXCEPTIONS_H__


#include <exception>
//YOU ARE TRYING TO DEFINE A DFA WITHOUT ANY STATES. TRY SOBERING UP
class EmptyDFAException : public std::exception {
	virtual const char* what() const throw() {
		return "The given DFA is empty.";
	}
};

//LOOKED FOR THE NUMBER OF TRANSITIONS AND COULDN'T FIND IT
class NumberOfTransitionsUndefinedException : public std::exception {
	virtual const char* what() const throw() {
		return "A state was given, but the number of transitions it has is not found on the same line.";
	}
};

//TRANSITIONS ARE IN THE FORM OF 'RANGE-START RANGE-END TRANSITION-STATE'. TRY THAT INSTEAD, DUMMY
class InvalidTransitionException : public std::exception {
	virtual const char* what() const throw() {
		return "Parsing a transition failed.";
	}
};

//THIS STATE NEEDS A TRANSITION BUT DOESN'T HAVE ONE
class TransitionUndefinedException : public std::exception {
	virtual const char* what() const throw() {
		return "Looked for a transition for a given symbol and didn't not find one, when one was needed.";
	}
};

//ADMIN HAS NOT DEFINED THIS STATE! THIS IS WRONG!
class StateUndefinedException : public std::exception {
	virtual const char* what() const throw() {
		return "A state was requested that does not exist.";
	}
};

// THE DFA FILE FOR DOES NOT EXIST ON CONSTRUCTION
class DFAFileNotFound : public std::exception {
	virtual const char* what() const throw() {
		return "The given DFA file not found.";
	}
};

#endif
